package com.ggh.entity;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @author ： jj
 * @date ：2019/10/10 10:02
 * @description : 用户类
 * @path : UserBean.java.UserBean
 */
@Data
public class UserBean  {
	// 基础信息--------------------
	/**
	 * 用户id
	 */
	private int userid;
	/**
	 * 性别*
	 */
	private int sex;
	/**
	 *  用户昵称
	 */
	private String nickname;
	/**
	 *  用户头像
	 */
	private String avatarurl;
	/**
	 * 金币（房卡）
	 */
	private float money;
	/**
	 * 监听心跳
	 */
	private Integer taskTime;
	/**
	 * 时间标识
	 * 	0初始
	 * 	1动漫完结
	 * 	2筛子结束
	 */
	private int identify;
	/**
	 * 0初始
	 * 1结算完成
	 */
	private int settlement;
	//------------------机器人---------------------
	/**
	 * AI胜率
	 */
	private int winnig;
	/**
	 * AI下注区间
	 */
	private String section;
	/**
	 * 是否是机器人
	 * 0不是
	 * 1是
	 */
	private int isAi;
	/**
	 *是否抢庄
	 */
	private Boolean isKamisho;
	/**
	 * 在每隔几回合上庄百人
	 */
	private int isKaMiShoBr;
	/**
	 * 不固定下庄百人
	 */
	private int shimoShoBr;
	// --------------------游戏属性-------------------------------
	// ----------通用------
	/**
	 * 用户状态
	 * -1大厅
	 * 0默认（进入房间，(或者因为其他状态)未准备）
	 * 1准备(游戏进行中。。。)
	 * 2  掉线
	 * 4 中途加入----
 	 */
	private int ready_state;
	/**
	 * 掉线状态
	 * 默认0
	 * 中途退出1
	 * 掉线 2
	 * */
	private int exit_state;
	/**
	 *坐标(坐的位置):
	 * 默认-1
	 */
	private int log_lat;
	/**
	 *  在当前房间中的总分(or 俱乐部中的积分)
	 */
	private float number;
	/**
	 * 牌桌对局中输赢总分,用于抽水
	 */
	private float zfen;
	/**
	 *  锁
	 */
	private Lock lock;
	/**
	 * 用户类型标识 :
	 * 0：默认（游客）
	 * 1：闲家
	 * 2：庄家
	 */
	private int banker;
	/**
	 *  申请上庄家：
	 *  0：默认
	 *  1：申请上庄
	 *  2：不抢
	 */
	private int upbanker;
	/**
	 * 是否可以配牌
	 * 0不可
	 * 1初可以
	 * 2天可以
	 * 3末可以
	 */
	private int isbrand;
	/**
	 * 抢庄次数
	 */
	private int robbanker;
	/**
	 * 坐庄次数
	 */
	private int dowbanker;
	/**
	 * 坐庄分
	 */
	private int dqnumber;
	/**
	 * 一锅
	 */
	private int  first;
	/**
	 * 二锅
	 */
	private int  second;
	/**
	 * 三锅
	 */
	private int  third;
	/**
	 * 初
	 */
	private int  chu;
	/**
	 * 天
	 */
	private int  tian;
	/**
	 * 末
	 */
	private int  mo;
	/**
	 * 用户的游戏中操作状态
	 * 0：默认
	 * 1:下注
	 * 2:排序
	 * 4:比牌 -- 被初始化
	 */
	private int power_type;
	/**
	 *  下注次数
	 */
	private int betFrequency;
	/**
	 * 用户自身当前对局数
	 */
	private int conFrequency;
	//
	/**
	 *  输赢状态：
	 *  0：默认
	 *  1：赢
	 *  2：输--
	 *  不被初始化
	 */
	private int hu_state;
	/**
	 * 当前输赢分数
	 */
	private float syfen;
	/**
	 * 用户手里的牌（牌的下标）
	 */
	private List<Integer> brands;
	/**
	 * 用户当前局牌型
	 */
	private int[] pindex;
	/**
	 * 当前牌型汉字
	 */
	private String[] phanzi;
	/**
	 * 根据牌大小扣除金币
	 */
	private List<Integer> potList;

	/**
	* @description : 无参构造（初始化用户信息）
	* @return: null
	* @date : 2019/10/10 10:17
	* @author : jj
	* @throws
	*/
	public UserBean() {

		isAi=0;
		isbrand=0;
		identify=0;
		settlement=0;
		taskTime=0;
		// 用户状态，大厅中
		ready_state = -1;
		// 掉线状态默认0
		exit_state = 0;
		// 用户的座位
		log_lat = -1;
		// 当前房间对局总分数
		number = 0;
		// 用户类型
		banker = 0;
		// 申请上庄
		upbanker = 0;
		// 抢庄次数
		robbanker = 0;
		// 坐庄次数
		dowbanker = 0;
		// 当前局下注倍数
		dqnumber = 0;
		// 操作状态
		power_type = 0;
		// 输赢状态
		hu_state = 0;
		// 当前输赢分数
		syfen = 0;
		// 手中的牌
		brands = new ArrayList<Integer>();
		// 当前手中上下牌型
		pindex = new int[] { -1, -1 };
		// 当前手中上下牌型汉字
		phanzi = new String[]{};
		lock = new ReentrantLock(true);
		potList=new ArrayList<>();
		// 牌桌对局中输赢总分
		zfen = 0;
	}
	/**
	* @description :初始化用户
	* @return: void
	* @date : 2019/10/10 10:19
	* @author : jj
	* @throws
	*/
	public void Initialization() {
		// 当前对局手中的牌
		if (brands != null) {
			brands.clear();
		}
		isbrand=0;
		identify=0;
		settlement=0;
		// 申请上庄
		upbanker = 0;
		// 当前局下注倍数
		dqnumber = 0;
		// 操作状态
		power_type = 0;
		// 输赢状态
		hu_state = 0;
		// 当前输赢分数
		syfen = 0;
		// 手中的牌
		brands = new ArrayList<Integer>();
		potList.clear();
		// 当前手中上下牌型
		pindex = new int[] { -1, -1 };
		// 当前手中上下牌型汉字
		phanzi = new String[] { "",""};
		chu=0;
		tian=0;
		mo=0;
	}


	/**
	* @description :初始化用户自身所有和房间内有关的属性
	 * 一般用于进入房间
	* @return: void
	* @date : 2019/10/10 10:21
	* @author : jj
	* @throws
	*/
	public void userEmpty() {
		isbrand=0;
		identify=0;
		settlement=0;
		// 抢庄次数
		robbanker = 0;
		// 坐庄次数
		dowbanker = 0;
		// 当前局下注倍数
		dqnumber = 0;
		// 当前输赢分数
		syfen = 0;
		// 当前手中上下牌型
		pindex = new int[] { -1, -1 };
		// 当前手中上下牌型汉字
		phanzi = new String[] { "",""};
		// 用户状态-1大厅0默认（进入房间，未准备）1准备(游戏进行中。。。) 2断线
		ready_state = -1;
		// 掉线状态默认0掉线1
		exit_state = 0;
		// 坐标(坐的位置):默认-1
		log_lat = -1;
		// 在当前房间中的总分
		number = 0;
		// 用户类型标识 0：默认（游客） 1：闲家 2：庄家
		banker = 0;
		// 申请上庄家：0：默认 1：申请上庄
		upbanker = 0;
		// 用户手里的牌
		brands.clear();
		//手中的锅
		potList.clear();
		// 用户的加注状态 0：默认 1：加注 2：跟注 3：弃牌
		power_type = 0;
		// 输赢状态：0：默认 1：赢 2：输了
		hu_state = 0;
		// 下注次数
		betFrequency = 0;
		// 当前对拘束
		conFrequency = 0;
		// 清空当前局赢得总分
		zfen = 0;
	}

}
